/**
 * 发送get异步请求
 * @param {string} url 请求地址
 * @param {object} params 请求参数  { 参数名:数据,...,参数名:数据}
 * @param {function} callback 回调函数
 * @param {string|undefined} type 数据类型
 * @param {object} headers 自定义请求头
 * @return undefined
 */
function get(url, params, callback, type, header = {}) {
    const xhr = new XMLHttpRequest;
    xhr.onreadystatechange = () => {
        if (xhr.readyState === 4) {
            if (xhr.status) {
                let res = xhr.responseText;
                if (type === 'json') res = JSON.parse(res);
                callback(res);//非固定逻辑
            }
        } else {
            console.log('瑕疵', xhr.status)
        }
    }
    let temp = [];
    //遍历并push到数组，以键=值的形式
    for (let key in params) {
        temp.push(`${key}=${params[key]}`)
    }
    //数组变字符串 &    temp.join('&')
    xhr.open('get', `${url}?${temp.join('&')}`)
    //遍历并push到数组，以键,值的形式
    for (const key in Headers) {
        xhr.setRequestHeader(key, header[key])
    }

    xhr.send(null)
}



// ------------------

/**
 * 发送post异步请求
 * @param {string} url 请求地址
 * @param {object} params 请求参数  { 参数名:数据,...,参数名:数据}
 * @param {function} callback 回调函数
 * @param {string|undefined} type 数据类型
 * @param {object} headers 自定义请求头
 * @return undefined
 */
function post(url, params, callback, type, header = {}) {
    const xhr = new XMLHttpRequest;
    xhr.onreadystatechange = () => {
        if (xhr.readyState === 4) {
            if (xhr.status) {
                let res = xhr.responseText;
                if (type === 'json') res = JSON.parse(res);
                callback(res);//非固定逻辑
            }
        } else {
            console.log('瑕疵', xhr.status)
        }
    }
    let temp = [];
    //遍历并push到数组，以键=值的形式
    for (let key in params) {
        temp.push(`${key}=${params[key]}`)
    }
    //数组变字符串 &    temp.join('&')
    xhr.open('post', `${url}`)
    //遍历并push到数组，以键,值的形式
    for (const key in Headers) {
        xhr.setRequestHeader(key, header[key])
    }
    xhr.setRequestHeader('content-type','application/x-www-form-urlencoded')
    xhr.send(temp.join('&'))
}
